package br.com.divulgaqui.service;

import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import br.com.divulgaqui.client.VendaServiceBeanLocal;
import br.com.divulgaqui.client.VendaServiceBeanRemote;
import br.com.divulgaqui.entity.ItemVenda;
import br.com.divulgaqui.entity.PacoteAnuncio;
import br.com.divulgaqui.entity.Pessoa;
import br.com.divulgaqui.entity.Venda;
import br.com.divulgaqui.persistence.dao.VendaDAO;
import br.com.divulgaqui.persistence.daoimpl.VendaDAOImpl;

/**
 * Session Bean implementation class VendaServiceBean
 */
@Stateless
@LocalBean
public class VendaServiceBean implements VendaServiceBeanRemote, VendaServiceBeanLocal {
	
	@PersistenceContext
	private EntityManager entityManager;
	private VendaDAO vendaDAO;	
	
    /**
     * Default constructor. 
     */
    public VendaServiceBean() {        
    }
    
    @PostConstruct
    public void init(){
    	vendaDAO = new VendaDAOImpl(entityManager);    	
    }

	@Override
	public Venda efetuarVenda(Pessoa pessoa, PacoteAnuncio pacoteAnuncio,Integer qtd) {		
		Venda venda = new Venda();
		venda.setPessoa(pessoa);
		venda.setDataVenda(new Date());
		ItemVenda itemVenda = new ItemVenda();
		itemVenda.setPacoteAnuncio(pacoteAnuncio);
		itemVenda.setQuantidade(qtd);		
		itemVenda.setValor(pacoteAnuncio.getValor()*qtd);
		venda.getInItensVenda().add(itemVenda);	
		venda.setValorTotal(pacoteAnuncio.getValor()*qtd);
		venda = vendaDAO.salvarVenda(venda);
		itemVenda.setVenda(venda);
		vendaDAO.salvarItemVenda(itemVenda);
		return venda;
	}

	@Override
	public List<Venda> vendasCliente(Pessoa pessoa) {		
		return vendaDAO.vendasCliente(pessoa);
	}

	@Override
	public List<Pessoa> recuperarQtpPacotesAnunciosPorClientes() {		
		return vendaDAO.recuperarQtpPacotesAnunciosPorClientes();
	}

}
